package com.todo.biz.infrastructure.repository;


import com.todo.biz.infrastructure.entity.po.CollectRelationPO;

import java.util.List;

/**
 * (CollectRelation)表服务接口
 *
 * @author zhangwenxiang
 * @since 2024-03-04 21:10:03
 */
public interface CollectRelationRepository {

    /**
     * 根据id查询集合关联详情
     *
     * @param id
     * @return
     */
    CollectRelationPO queryCollectRelationPOById(Long id);

    /**
     * 新增集合关联信息
     *
     * @param collectRelationPO
     * @return
     */
    Boolean insertCollectRelationPO(CollectRelationPO collectRelationPO);

    /**
     * 新增集合关联信息
     *
     * @param collectRelationPOList
     * @return
     */
    Boolean batchInsertCollectRelation(List<CollectRelationPO> collectRelationPOList);

    /**
     * 更新集合关联信息
     *
     * @param collectRelationPO
     * @return
     */
    Boolean updateCollectRelationPOById(CollectRelationPO collectRelationPO);

    /**
     * 根据主键id删除集合管理信息
     *
     * @param id
     * @return
     */
    Boolean removeCollectRelationById(Long id);

    /**
     * 根据集合Id删除关联信息
     *
     * @param setId
     * @return 删除数据总数
     */
    Integer removeCollectRelationBySetId(Long setId);

    /**
     * 根据集合Id查询集合关联id列表
     *
     * @param setId
     * @return
     */
    List<Long> queryIdListBySetId(Long setId);

    /**
     * 根据集合Id查询集合关联信息总数
     *
     * @param setId
     * @return
     */
    Integer queryCountBySetId(Long setId);

    /**
     * 根据集合Id和关联类型和关联id查询集合关联信息
     *
     * @param setId
     * @param relationType
     * @param relationId
     * @return
     */
    CollectRelationPO queryCollectRelationByRelation(Long setId, Integer relationType, Long relationId);

    /**
     * 根据集合Id查询集合关联信息列表
     *
     * @param setId
     * @return
     */
    List<CollectRelationPO> queryCollectRelationListBySetId(Long setId);

    /**
     * 根据关联id反差所属集合列表
     *
     * @param relationId
     * @return
     */
    List<Long> querySetIdListByRelationId(Long relationId);
}
